package com.hd.json2mysql.mapper;

import com.hd.json2mysql.entity.*;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface CodeAnalysisMapper {
    // 类操作
    @Insert("INSERT IGNORE INTO classes(id, node_name, module, type, package_name, file_path, system_id, start_line, end_line) " +
            "VALUES(#{id}, #{nodeName}, #{module}, #{type}, #{packageName}, #{filePath}, #{system_id}, #{startLine}, #{endLine})")
    void insertClass(Classes classes);

    // 字段操作
    @Insert("INSERT IGNORE INTO fields(id, class_id, type_key, type_type) " +
            "values(#{id},#{classId},#{typeKey},#{typeType})")
    void insertFields(Fields fields);
//
//    // 方法操作
//    @Options(useGeneratedKeys = true, keyProperty = "id")
//    int insertMethod(Functions functions);
//
//    // 方法参数
//    void insertParameters(@Param("methodId") int methodId,
//                          @Param("params") List<FunctionParameters> params);
//
//    // 函数调用
//    void insertFunctionCalls(@Param("methodId") int methodId,
//                             @Param("calls") List<FunctionCalls> calls);
//
//    // 注解
//    void insertAnnotations(@Param("parentType") String parentType,
//                           @Param("parentId") int parentId,
//                           @Param("anns") List<Annotations> annotations);
//
//    // 导入
//    void insertImports(@Param("classId") int classId,
//                       @Param("imports") List<Imports> imports);
//
//    // 实现接口
//    void insertImplements(@Param("classId") int classId,
//                          @Param("interfaces") List<String> interfaces);
}
